﻿#region << 文件说明 >>

/*----------------------------------------------------------------
 * 命名空间：Vampirewal.Core.WebApi.Exceptions
 * 唯一标识：27766039-90cc-406c-be5a-813c8b842d76
 * 文件名：VampirewalWebApiException
 *
 * 创建者：杨程
 * 电子邮箱：235160615@qq.com
 * 创建时间：2023/10/10 12:51:44
 * 版本：V1.0.0
 * 描述：
 *
 * ----------------------------------------------------------------
 * 修改人：
 * 时间：
 * 修改说明：
 *
 * 版本：V1.0.1
 *----------------------------------------------------------------*/

#endregion << 文件说明 >>

namespace Vampirewal.Core.WebApi;

/// <summary>
/// 自定义异常类
/// </summary>
[Serializable]
public sealed class VampirewalWebApiException : Exception
{
    /// <summary>
    /// 构造函数
    /// </summary>
    public VampirewalWebApiException() : base()
    {
    }

    public VampirewalWebApiException(string message, int errorCode) : base(message)
    {
        ErrorMessage = message;
        ErrorCode = errorCode;
    }

    public VampirewalWebApiException(string message, int errorCode, Exception innerException) : base(message, innerException)
    {
        ErrorMessage = message;
        ErrorCode = errorCode;
    }

    #region [     属性     ]

    public string ErrorMessage { get;private set; }

    /// <summary>
    /// 状态码
    /// </summary>
    public int ErrorCode { get;private set; } = 500;

    #endregion
}

/// <summary>
/// 专用于VampirewalWebApi的抛出异常类
/// </summary>
public static class WebApiError
{
    /// <summary>
    /// 抛出异常
    /// </summary>
    /// <param name="message"></param>
    /// <param name="errorCode"></param>
    /// <returns></returns>
    public static void Out(string message,int errorCode)
    {
        throw new VampirewalWebApiException(message, errorCode);
    }

    /// <summary>
    /// 抛出异常
    /// </summary>
    /// <param name="message"></param>
    /// <param name="errorCode"></param>
    /// <param name="exc"></param>
    /// <exception cref="VampirewalWebApiException"></exception>
    public static void Out(string message, int errorCode, Exception exc)
    {
        throw new VampirewalWebApiException(message, errorCode, exc);
    }
}